package com.foreknow.controller;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

///**
// * 什么是Servlet：就是一个服务器端的应用程序
// * 作用：
// * 1.可以读取客户端发送的所有数据
// * 2.查询http请求中包含的任何其它信息(获取请求参数)
// * 3.处理数据并生成结果
// * 4.还可以设置合适的http响应参数
// * 5.将响应的信息发送给客户端
// *
// * 1.要想创建一个Servlet，那么就一定要继承HttpServlet
// * 2.要重写doGet/doPost方法。
// *      这两个方法什么时候会调用：如果客户端向服务器端发送的请求是get请求，那么就会自动去调用Servlet中的doGet()方法
// *                           如果客户端向服务器端发送的请求是post请求，那么就会自动去调用Servlet中的doPost()方法
// * 3.方法的参数：
// * 关于请求的方法
// * http 1.1 支持多种请求方式 ： 常用的方式 GET POST  put delete
// * GET 相当于查询   put 相当于修改   delete 删除  post 添加
// *
// *
// *      HttpServletRequest req  接口 ：这个接口无需我们自己初始化，服务器(Web容器)会自动将它进行初始化.
// *          这个接口中会提供一些方法：例如  获取一些请求的参数
// *       HttpServletRequest req  接口   作用  ：1. 可以提取客户端请求的信息
// *                                               比如说  提取表单信息  还可以提取http 偷得信息  提取cookie信息
// *                                               2. 修改字符的编码编码
// *                                               3.在服务器端来保存数据
// *                                               4.转换资源（资源的跳转）
// *
// *
// *      HttpServletResponse resp 接口 ：这个接口无需我们自己初始化，服务器(Web容器)会自动将它进行初始化.
// *
// *      以上的参数大家可以从网络上下载JavaEE6的开发文档：javax.servlet.http
// *
// * Servlet的生命周期：就是一个对象从它被创建开始一直到这个对象被销毁掉。
// * 三个阶段：
// * 1.初始化阶段 init()
// * 2.响应客户端请求的阶段  service()
// * 3.销毁阶段 destroy()
// *
// * 使用servlet如何提取表表单数据
// *


public class FirstServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置服务器端向客户端响应的内容的类型(MIME)
        resp.setContentType("text/html;charset=utf-8");
        //要使用这个对象中的方法在页面中输出内容
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>这是一个servelt程序</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>这是一个测试程序servelt</h1>");
        out.println("客户端向服务端请求的方法:"+req.getMethod()+"<br>");
        out.println("获取请求的url:"+req.getRequestURL()+"<br>");
        out.println("获取请求的uri:"+req.getRequestURI()+"<br>");
        out.println("获取到当前项目的名称:"+req.getContextPath()+"<br>");
        out.println("获取到本地端口号:"+req.getLocalPort()+"<br>");
        out.println("获取到http协议名称:"+req.getProtocol()+"<br>");
        out.println(new Date()+"<br>");
        out.println("</body>");
        out.println("</html>");
        out.flush();
        out.close();




    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

//    @Override
//    public void destroy() {
//        System.out.println("destory......");
//    }

//    @Override
//    public void init(ServletConfig config) throws ServletException {
//        //ServletConfig:使用此对象中的方法可以获取web.xml中配制的初始化参数  getInitParameter只能获取到局部的初始化参数
//        // String pageSize = config.getInitParameter("pageSize");
//
//        //如何获取到全局的初始化参数,一定要先调用ServletConfig的getServletContext()方法
//        String pageSize = config.getServletContext().getInitParameter("pageSize");
//        System.out.println(Integer.parseInt(pageSize));
//    }

    //    @Override
    //    public void init() throws ServletException {
    //        //只被调用一次init()方法
    //        System.out.println("init......");
    //    }
    // 总结：1 生命周期 （面试一定会考的问题） init     service   destroy      2.如果获取到初始化参数

}






























